/**
 * 客服管理相关API
 */
import request from '@/utils/request';

/**
 * 创建客服账号
 * @param {Object} customerService - 客服信息
 */
export function createService(customerService) {
  return request.post('/api/chat/service/service', customerService);
}

/**
 * 更新客服信息
 * @param {number} id - 客服ID
 * @param {Object} customerService - 客服信息
 */
export function updateService(id, customerService) {
  return request.put(`/api/chat/service/service/${id}`, customerService);
}

/**
 * 删除客服
 * @param {number} id - 客服ID
 */
export function deleteService(id) {
  return request.delete(`/api/chat/service/service/${id}`);
}

/**
 * 更新客服状态
 * @param {number} id - 客服ID
 * @param {string} status - 新状态
 */
export function updateServiceStatus(id, status) {
  return request.post('/api/chat/service/status', {}, {
    params: {
      serviceId: id,
      status: status
    }
  });
}

/**
 * 获取客服详情
 * @param {number} id - 客服ID
 */
export function getServiceById(id) {
  return request.get(`/api/chat/service/service/${id}`);
}

/**
 * 获取在线客服列表
 */
export function getOnlineServices() {
  return request.get('/api/chat/service/service/online');
}

/**
 * 获取可用客服列表
 */
export function getAvailableServices() {
  return request.get('/api/chat/service/service/available');
}

/**
 * 获取所有客服列表
 */
export function getAllServices() {
  return request.get('/api/chat/service/service/list');
}

/**
 * 分页获取客服列表
 * @param {Object} params - 查询参数
 * @param {number} params.current - 当前页码
 * @param {number} params.size - 每页大小
 * @param {string} [params.keyword] - 搜索关键词
 * @param {string} [params.serviceType] - 客服类型
 * @param {number} [params.groupId] - 分组ID
 */
export function getServicePage(params) {
  console.log('customerService.js getServicePage 接收到的参数:', JSON.stringify(params));
  
  // 直接构建URL而不是使用params选项
  let url = '/api/chat/service/service/page?current=' + (params.current || 1) + '&size=' + (params.size || 10);
  
  // 只有在有值时才添加搜索和筛选参数
  if (params.keyword && params.keyword.trim()) {
    url += '&keyword=' + encodeURIComponent(params.keyword.trim());
    console.log('添加keyword参数:', params.keyword.trim());
  }
  
  if (params.serviceType) {
    url += '&serviceType=' + encodeURIComponent(params.serviceType);
    console.log('添加serviceType参数:', params.serviceType);
  }
  
  if (params.groupId) {
    url += '&groupId=' + encodeURIComponent(params.groupId);
    console.log('添加groupId参数:', params.groupId);
  }
  
  console.log('最终请求URL:', url);
  return request.get(url);
}

/**
 * 获取客服状态
 */
export function getServiceStatus() {
  return request.get('/api/chat/service/service/status');
}

/**
 * 更新当前客服状态
 * @param {Object} statusData - 状态数据
 */
export function updateCurrentServiceStatus(statusData) {
  return request.put('/api/chat/service/service/status', statusData);
}

/**
 * 获取客服统计数据
 * @param {Object} params - 查询参数
 */
export function getServiceStats(params) {
  return request.get('/api/chat/service/service-stats', { params });
}

/**
 * 获取指定日期所有客服的统计数据
 * @param {Object} params - 查询参数
 * @param {string} params.date - 日期，格式：YYYY-MM-DD
 */
export function getServiceDailyStats(params) {
  // 确保 params 是一个对象
  const queryParams = {
    date: params.date
  };
  return request.get('/api/service/stats/daily', { params: queryParams });
}

/**
 * 获取客服排名数据
 * @param {Object} params - 查询参数
 * @param {string} params.date - 日期，格式：YYYY-MM-DD
 */
export function getServiceRanking(params) {
  // 确保 params 是一个对象
  const queryParams = {
    date: params.date
  };
  return request.get('/api/service/stats/ranking', { params: queryParams });
}

/**
 * 重新计算指定客服的每日统计数据
 * @param {number} serviceId - 客服ID
 * @param {string} date - 日期，格式：YYYY-MM-DD
 */
export function calculateServiceStats(serviceId, date) {
  return request.post('/api/chat/service/stats/calculate', null, {
    params: {
      serviceId,
      date
    }
  });
}

/**
 * 获取所有客服分组
 */
export function getAllGroups() {
  return request.get('/api/chat/service/group/list');
}

/**
 * 创建客服分组
 * @param {Object} group - 分组信息
 */
export function createGroup(group) {
  return request.post('/api/chat/service/group', group);
}

/**
 * 更新客服分组
 * @param {number} groupId - 分组ID
 * @param {Object} group - 分组信息
 */
export function updateGroup(groupId, group) {
  return request.put(`/api/chat/service/group/${groupId}`, group);
}

/**
 * 删除客服分组
 * @param {number} groupId - 分组ID
 */
export function deleteGroup(groupId) {
  return request.delete(`/api/chat/service/group/${groupId}`);
}

/**
 * 获取指定日期所有客服的统计数据
 * @param {string} date - 日期，格式：YYYY-MM-DD
 */
export function getAllServiceStatsForDate(date) {
  return request.get('/api/chat/service/stats/daily', { params: { date } });
}

export default {
  createService,
  updateService,
  deleteService,
  updateServiceStatus,
  getServiceById,
  getOnlineServices,
  getAvailableServices,
  getAllServices,
  getServicePage,
  getServiceStatus,
  updateCurrentServiceStatus,
  getServiceStats,
  getServiceDailyStats,
  getServiceRanking,
  calculateServiceStats,
  getAllGroups,
  createGroup,
  updateGroup,
  deleteGroup,
  getAllServiceStatsForDate
}; 